package cn.tedu.oop2;
/**本类用于测试继承中构造方法的使用
 * 1.子类在创建对象时，默认会先调用父类的构造方法
 * 2.原因是子类构造函数中的第1行默认存在super();--表示调用父类的无参构造
 * 3.当父类没有无参构造时，可以通过super(参数)；调用父类的其他含参构造
 * 注意：子类必须调用父类的一个构造函数，无论是无参还是含参，选一个即可，默认的或者super()指定
 * 4.构造方法不能被继承！因为语法的原因，要求构造方法的名字必须是本类类名，
 * 不能在子类中出现一个父类名字的构造方法
 * */
public class TestExtends2 {
    public static void main(String[] args) {
        //6.1通过父类的无参构造创建父类的对象
        Father2 f=new Father2();
        //6.2通过父类的含参构造创建父类的对象
        Father2 f2=new Father2("傍晚好");
        //7.创建子类对象
        Son2 s=new Son2();
    }
}
//1.创建一个父类
class Father2{
    //3.创建父类的无参构造
    public Father2(){
        System.out.println("我是父类的无参构造");
    }
    //4.创建父类的含参构造
    public Father2(String s){
        System.out.println("我是父类的含参构造"+s);
    }

}
//2.创建一个子类
class Son2 extends Father2{
    //5.创建子类的无参构造
    public Son2(){
//        super();//调用父类的无参构造，默认的
        System.out.println("我是子类的无参构造");
//        Father2();//构造方法不能被继承！因为语法的原因，要求构造方法的名字必须是本类类名，
// * 不能在子类中出现一个父类名字的构造方法
    }

}
